/* !
 * @Author: miss-tree
 * @Date: 2024-12-06 23:04:34
 * @Description: 文件上传
 * 默认将 form-data 表单中的文件直接存储到指定目录
 * 不需要额外处理
 *  确保你总是处理了用户的文件上传。 永远不要将 multer 作为全局中间件使用，
 * 因为恶意用户可以上传文件到一个你没有预料到的路由，应该只在你需要处理上传文件的路由上使用。
 * .single(fieldname) 接受一个以 fieldname 命名的文件。这个文件的信息保存在 req.file。
 * .array(fieldname[, maxCount]) 接受一个以 fieldname 命名的文件数组。可以配置 maxCount 来限制上传的最大数量。这些文件的信息保存在 req.files。
 * .fields(fields) 接受指定 fields 的混合文件。这些文件的信息保存在 req.files。
 * fields 应该是一个对象数组，应该具有 name 和可选的 maxCount 属性。
 * Example:
 [
   { name: 'avatar', maxCount: 1 },
   { name: 'gallery', maxCount: 8 }
 ]
 * .none() 只接受文本域。如果任何文件上传到这个模式，将发生 "LIMIT_UNEXPECTED_FILE" 错误。这和 upload.fields([]) 的效果一样。
 *.any() 接受一切上传的文件。文件数组将保存在 req.files。
*/


const multer = require('multer');
const path = require('path');
// 设置存储引擎
const storage = multer.diskStorage({
 destination: function (req, file, cb) {
  cb(null, path.resolve(__dirname,'../public/')); // 文件上传的目录
 },
 filename: function (req, file, cb) {
  let nFileName = ''
  // nFileName = file.fieldname + '-' + Date.now() + '.' + file.originalname.split('.').pop()
  // 保持原始文件名 但是相同文件名会覆盖
  nFileName = file.originalname.slice(-20)
  cb(null, nFileName);
 }
});

// 创建 multer 实例
const upload = multer({ storage: storage });
const UploadVideo = multer({ dest: 'uploads/'  });

module.exports = {upload,UploadVideo};